Author: Dave Nilsen
Date: 05/21/2020
*This is an R Markdown Notebook.
The purpose of this report is to analyze King County’s ability to provide educational opportunities to its resident student populations. The analysis will draw a correlation between five separate variables to create an “Educational Opportunity Index” of King County. These variables will include School Reading Proficiency, School Math Proficiency, Student Poverty Rates, Teacher Qualifications, and Graduation Rates. These variables were chosen by the Growing Transit Communities partnership with the study area being the central Puget Sound region. This study will expand the scope of the original study to include the entire King County region.
Opportunity mapping can provide a visual reference per subregion of a study to find a correlation or to compare the subregions within the scope of the study. This study divides sub-regions by the defined boundaries of the 2010 Census Tract areas. The data collected in these census tracts will be standardized (see Methods), and given a weighted value, and then divided into 5 standard classes. This data will then be visualized by a color scale to represent these classes. The result map will indicate census tracts that fall within the scale of opportunity-Very Low to Very High.
The Opportunity Index Map will show the distribution of education opportunity throughout King County. This will give officials and residents a representation of the current state of educational opportunity within the county. This data can be used to recognize subregions that are below the mean and work towards a comprehensive plan to address these shortcomings.
This study uses the following five variables to generate an Education Opportunity Index:
These five variables when compared to each other show some correlation to the Puget Sound Region as having the most diverse spread of Education Opportunities. This region has some of the highest and lowest levels of opportunity, when compared to the rest of King County. The following is a summary of each of the five measurements of opportunity before the corresponding weight is calculated into the equation.
KingEduJson <- geojsonio::geojson_read("King_edu.json", what = "sp")
summary(KingEduJson$EDU1)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 31.96 61.31 73.55 71.52 83.14 93.47
summary(KingEduJson$EDU2)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 27.14 53.90 67.49 65.44 78.60 90.84
summary(KingEduJson$EDU3)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0000 0.1656 0.3229 0.3866 0.6167 0.8931
summary(KingEduJson$EDU4)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0000 0.5770 0.6312 0.5751 0.6883 0.8277
summary(KingEduJson$EDU5)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.2649 0.7653 0.8272 0.8103 0.8836 0.9631
The weights used in this study were influenced by Vassilev’s Educational Indicators. The resulting weights give more value to the measurement of student academic achievement as they are a measure of students’ academic knowledge. Student Poverty Rates is the next highest weight as socioeconomic situations may have an impact of student’s educational opportunities. Teacher Qualification is second from the last as the level of advanced education may not directly correlate to their ability to teach students. The last of the variable to be weighted is Graduation Rates, as they are not necessarily related to the entire student populations within King County. Students graduating in King County may not have been a resident during their primary education or have moved within different census tracts which may not be a complete representation of the data, resulting in less valued data than the previous variables.
These five variables when compared to each other show some correlation to the Puget Sound Region as having the most diverse spread of Education Opportunities. This region has some of the highest and lowest levels of opportunity, when compared to the rest of King County. The flowing is a summary each of the five measurements of opportunity before the corresponding weight is calculated into the equation
The methods used in this study begin with converting the initial data set KingEdu1.shp from shapefile to GeoJSON. This conversion was processed within ArcGIS Pro 2.5.0, utilizing the Features To JSON tool. Upon output the file was converted to GeoJSON and projected into WGS_1984 to be used in a web-based map. The newly converted GeoJSON (KingEduJson) was then read into RStudio in the R Notebook format using R version 4.0. The rest of the analysis is detailed in the following:
library(leaflet)
library(sp)
library(rgdal)
## rgdal: version: 1.4-8, (SVN revision 845)
## Geospatial Data Abstraction Library extensions to R successfully loaded
## Loaded GDAL runtime: GDAL 2.2.3, released 2017/11/20
## Path to GDAL shared files: C:/Users/super/Documents/R/win-library/4.0/rgdal/gdal
## GDAL binary built with GEOS: TRUE
## Loaded PROJ.4 runtime: Rel. 4.9.3, 15 August 2016, [PJ_VERSION: 493]
## Path to PROJ.4 shared files: C:/Users/super/Documents/R/win-library/4.0/rgdal/proj
## Linking to sp version: 1.4-1
library(geojsonio)
##
## Attaching package: 'geojsonio'
## The following object is masked from 'package:base':
##
## pretty
library(knitr)
library(formattable)
library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(Hmisc)
## Loading required package: lattice
## Loading required package: survival
## Loading required package: Formula
##
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:dplyr':
##
## src, summarize
## The following objects are masked from 'package:base':
##
## format.pval, units
library(htmltools)
KingEduJson <- geojsonio::geojson_read("King_edu.json", what = "sp")
class(KingEduJson)
## [1] "SpatialPolygonsDataFrame"
## attr(,"package")
## [1] "sp"
names(KingEduJson)
## [1] "FID" "GEOID10" "NAMELSAD10" "ALAND10" "AWATER10"
## [6] "INTPTLAT10" "INTPTLON10" "UGA" "Shape_Leng" "Shape_Area"
## [11] "EDU1" "EDU2" "EDU3" "EDU4" "EDU5"
This process removes any missing valuse in the data set and converts it to “0” to avoid further errors later on
EDU1 <- KingEduJson$EDU1
EDU1[is.na(EDU1)] <- 0 ##This changes any missing data to 0
EDU2 <- KingEduJson$EDU2
EDU2[is.na(EDU2)] <- 0 ##This changes any missing data to 0
EDU3 <- KingEduJson$EDU3
EDU3[is.na(EDU3)] <- 0 ##This changes any missing data to 0
EDU4 <- KingEduJson$EDU4
EDU4[is.na(EDU4)] <- 0 ##This changes any missing data to 0
EDU5 <- KingEduJson$EDU5
EDU5[is.na(EDU5)] <- 0 ##This changes any missing data to 0
The formula used for determining z-scores is as follows: z-score = (x – mean(x) / standard deviation(x)
EDU1_zScore <- (EDU1 - mean(EDU1)) / sd(EDU1)
EDU2_zScore <- (EDU2 - mean(EDU2)) / sd(EDU2)
EDU3_zScore <- (EDU3 - mean(EDU3)) / sd(EDU3)
EDU4_zScore <- (EDU4 - mean(EDU4)) / sd(EDU4)
EDU5_zScore <- (EDU5 - mean(EDU5)) / sd(EDU5)
head(EDU1_zScore, 5)
## [1] 1.0161954 1.1344750 -0.3820798 0.1990827 0.9167861
head(EDU2_zScore, 5)
## [1] 0.83839381 0.96551599 -0.28476873 0.09170696 1.26796537
head(EDU3_zScore, 5)
## [1] -0.8216048 -1.1552875 0.1265868 0.5070739 -1.1427794
head(EDU4_zScore, 5)
## [1] 0.2592494 0.1972539 0.3273972 -2.7217412 0.6993703
head(EDU5_zScore, 5)
## [1] 0.8407906 0.6132709 0.2522557 0.1993728 1.2885945
This process converts selected numerical values into absolute values as negative values are not necessary in this study.
EDU1_zScore <- abs(EDU1_zScore)
EDU2_zScore <- abs(EDU2_zScore)
EDU3_zScore <- abs(EDU3_zScore)
EDU4_zScore <- abs(EDU4_zScore)
EDU5_zScore <- abs(EDU5_zScore)
head(EDU1_zScore, 5)
## [1] 1.0161954 1.1344750 0.3820798 0.1990827 0.9167861
head(EDU2_zScore, 5)
## [1] 0.83839381 0.96551599 0.28476873 0.09170696 1.26796537
head(EDU3_zScore, 5)
## [1] 0.8216048 1.1552875 0.1265868 0.5070739 1.1427794
head(EDU4_zScore, 5)
## [1] 0.2592494 0.1972539 0.3273972 2.7217412 0.6993703
head(EDU5_zScore, 5)
## [1] 0.8407906 0.6132709 0.2522557 0.1993728 1.2885945
KingEduJson$EDU1_zScore <- EDU1_zScore
KingEduJson$EDU2_zScore <- EDU2_zScore
KingEduJson$EDU3_zScore <- EDU3_zScore
KingEduJson$EDU4_zScore <- EDU4_zScore
KingEduJson$EDU5_zScore <- EDU5_zScore
#head(KingEduJson, 3)
EducComp <- abs((EDU1_zScore + EDU2_zScore + EDU3_zScore + EDU4_zScore + EDU5_zScore) / 5)
KingEduJson$EducComp <- EducComp
#head(KingEduJson, 3)
#Indicatior weights were based of: http://wikiprogress.org/articles/education-and-skills/educational-indicators/#What_should_an_education_indicator_measure
EDU1w <- EDU1_zScore*4 #School Reading Proficiency
EDU2w <- EDU2_zScore*4 #School Math Proficiency
EDU3w <- EDU3_zScore*3 #Student Poverty Rates
EDU4w <- EDU4_zScore*2 #Teacher Qualifications
EDU5w <- EDU5_zScore*1 #Graduation Rates
ECWeighted <- ((EDU1w + EDU2w + EDU3w + EDU4w + EDU5w) / 5)
KingEduJson$ECWeighted <- ECWeighted
#head(KingEduJson, 3)
summary(ECWeighted)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.1151 1.4709 2.2510 2.3004 2.9798 5.5218
Class interval was determined for all the variables data sets with this formula: ci = (max(x) – min(x) / 5
#class intrerval = (Max-Min)/Breaks
ci <- (max(ECWeighted, na.rm = T) - min(ECWeighted, na.rm = T))/5
ci
## [1] 1.081341
The ECWeighted column was divided into five categories with the following formula:
Bins = (-Inf, x + class interval, x + class interval * 2, x + class interval * 3, x + class interval * 4, Inf)
Labels = (“1 – Very Low”,“2 – Low”,“3 – Moderate”,“4 – High”,“5 - Very High”)
b <- c(-Inf, 0.1151 + ci ,0.1151 + ci*2, 0.1151 + ci*3, 0.1151 + ci*4, Inf)
l <- c("1 – Very Low","2 – Low","3 – Moderate","4 – High","5 - Very High")
c1 <- cut(ECWeighted, b, l)
KingEduJson$EduScore <- c1
#head(KingEduJson)
#c1
Converting the data into percentages allows for a clearer understanding of the data in its finial form.
x <- c(KingEduJson$EDU5)
x <- percent(x)
head(x, 3)
## [1] 90.39% 87.86% 83.84%
This is a finial cleaning of any missing data within the ECWeighted Column
ECWeighted <- KingEduJson$ECWeighted
ECWeighted[is.na(ECWeighted)] <- 0 ##This changes any missing data to 0
KingEduJson$ECWeighted <- ECWeighted
summary(KingEduJson)
## Object of class SpatialPolygonsDataFrame
## Coordinates:
## min max
## x -122.53181 -121.06572
## y 47.08446 47.78033
## Is projected: FALSE
## proj4string :
## [+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0]
## Data attributes:
## FID GEOID10 NAMELSAD10 ALAND10
## Min. : 0 Length:397 Length:397 Min. :2.291e+05
## 1st Qu.: 99 Class :character Class :character 1st Qu.:1.628e+06
## Median :198 Mode :character Mode :character Median :2.766e+06
## Mean :198 Mean :1.380e+07
## 3rd Qu.:297 3rd Qu.:4.650e+06
## Max. :396 Max. :1.390e+09
## AWATER10 INTPTLAT10 INTPTLON10 UGA
## Min. : 0 Length:397 Length:397 Length:397
## 1st Qu.: 0 Class :character Class :character Class :character
## Median : 5753 Mode :character Mode :character Mode :character
## Mean : 644492
## 3rd Qu.: 388852
## Max. :27317733
## Shape_Leng Shape_Area EDU1 EDU2
## Min. :0.02384 Min. :0.0000274 Min. :31.96 Min. :27.14
## 1st Qu.:0.06783 1st Qu.:0.0002128 1st Qu.:61.31 1st Qu.:53.90
## Median :0.09444 Median :0.0003564 Median :73.55 Median :67.49
## Mean :0.13707 Mean :0.0017055 Mean :71.52 Mean :65.44
## 3rd Qu.:0.13723 3rd Qu.:0.0006397 3rd Qu.:83.14 3rd Qu.:78.60
## Max. :2.54729 Max. :0.1696872 Max. :93.47 Max. :90.84
## EDU3 EDU4 EDU5 EDU1_zScore
## Min. :0.0000 Min. :0.0000 Min. :0.2649 Min. :0.0170
## 1st Qu.:0.1656 1st Qu.:0.5770 1st Qu.:0.7653 1st Qu.:0.5057
## Median :0.3229 Median :0.6312 Median :0.8272 Median :0.7976
## Mean :0.3866 Mean :0.5751 Mean :0.8103 Mean :0.8588
## 3rd Qu.:0.6167 3rd Qu.:0.6883 3rd Qu.:0.8836 3rd Qu.:1.2166
## Max. :0.8931 Max. :0.8277 Max. :0.9631 Max. :2.8023
## EDU2_zScore EDU3_zScore EDU4_zScore EDU5_zScore
## Min. :0.001674 Min. :0.001506 Min. :0.001037 Min. :0.009565
## 1st Qu.:0.403414 1st Qu.:0.530288 1st Qu.:0.156081 1st Qu.:0.243817
## Median :0.849240 Median :0.897460 Median :0.382767 Median :0.591080
## Mean :0.852861 Mean :0.886189 Mean :0.630916 Mean :0.734896
## 3rd Qu.:1.248973 3rd Qu.:1.180895 3rd Qu.:0.667663 3rd Qu.:0.938567
## Max. :2.541499 Max. :2.043548 Max. :2.721741 Max. :4.895487
## EducComp ECWeighted EduScore
## Min. :0.06983 Min. :0.1151 1 – Very Low : 64
## 1st Qu.:0.53034 1st Qu.:1.4709 2 – Low :139
## Median :0.78045 Median :2.2510 3 – Moderate :136
## Mean :0.79273 Mean :2.3004 4 – High : 48
## 3rd Qu.:1.02996 3rd Qu.:2.9798 5 - Very High: 10
## Max. :1.71248 Max. :5.5218
The following maps are the result of the analysis above. These maps are interactive and reproducible.
EduScore <-KingEduJson$EduScore
NAMELSAD10 <- KingEduJson$NAMELSAD10
EDU0 <- ECWeighted
#summary(EDU0)
EDU0ci <- (max(EDU0, na.rm = T) - min(EDU0, na.rm = T))/5
EDU0var <- EDU0ci
EDU0b <- c(-Inf, EDU0var + EDU0ci, EDU0var+ EDU0ci*2, EDU0var+EDU0ci*3, EDU0var+ EDU0ci*4, Inf)#%>%
#percent()
#head(EDU0b_test, 5)
EDU0l <- c("1 – Very Low","2 – Low","3 – Moderate","4 – High","5 - Very High")
EDU0c1 <- cut(EDU0, EDU0b, EDU0l)
EDU0pal <- colorBin("YlOrRd", domain = EDU0, bins = EDU0b)
EDU0labels <- sprintf(
"<p><center>Test Scores:</p><h5>Reading: <strong>%s</strong></h5>
<h5><center>Math: <strong>%s</strong></h5>
<h5><center>Graduation Rates: <strong>%s</strong></h5>
<h5><center>Opertunity Index: <strong>%s</strong></h5>
<h6><center>%s</h6>",
EDU1, EDU2, x, EduScore, NAMELSAD10
) %>% lapply(htmltools::HTML)
EDU0m <- leaflet(KingEduJson) %>%
setView(-121.979052, 47.45, 9) %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addPolygons(
fillColor = ~EDU0pal(EDU0),
weight = 1,
opacity = 1,
color = "white",
dashArray = "3",
fillOpacity = 0.7,
highlight = highlightOptions(
weight = 5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = EDU0labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto"))%>%
addLegend(pal = EDU0pal, values = EDU0c1, opacity = 0.7, title = "<center>Opertunity Index",
position = "bottomleft",)
EDU0m
#EDU1
#summary(EDU1)
EDU1ci <- (max(EDU1, na.rm = T) - min(EDU1, na.rm = T))/5
EDU1var <- EDU1ci
EDU1b <- c(-Inf, EDU1var + EDU1ci, EDU1var+ EDU1ci*2, EDU1var+EDU1ci*3, EDU1var+ EDU1ci*4, Inf)#%>%
#percent()
#head(EDU1b_test, 5)
EDU1l <- c("1 – Very Low","2 – Low","3 – Moderate","4 – High","5 - Very High")
EDU1c1 <- cut(EDU1, EDU1b, EDU1l)
EDU1pal <- colorBin("YlOrRd", domain = EDU1, bins = EDU1b)
EDU1labels <- sprintf(
"<h5><center>School Reading Proficiency:<br><center><strong>%s</strong></h5>
<h5><center>Opertunity Index:<br><center><strong>%s</strong></h5>
<h6><center>%s</h6>",
EDU1, EduScore, NAMELSAD10
) %>% lapply(htmltools::HTML)
EDU1m <- leaflet(KingEduJson) %>%
setView(-121.979052, 47.45, 9) %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addPolygons(
fillColor = ~EDU1pal(EDU1),
weight = 1,
opacity = 1,
color = "white",
dashArray = "3",
fillOpacity = 0.7,
highlight = highlightOptions(
weight = 5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = EDU1labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto"))%>%
addLegend(pal = EDU1pal, values = EDU1c1, opacity = 0.7, title = "<center>School Reading Proficiency",
position = "bottomleft",)
EDU1m
#EDU2
#summary(EDU2)
EDU2ci <- (max(EDU2, na.rm = T) - min(EDU2, na.rm = T))/5
EDU2var <- EDU2ci
EDU2b <- c(-Inf, EDU2var + EDU2ci, EDU2var+ EDU2ci*2, EDU2var+EDU2ci*3, EDU2var+ EDU2ci*4, Inf)#%>%
#percent()
#head(EDU2b_test, 5)
EDU2l <- c("1 – Very Low","2 – Low","3 – Moderate","4 – High","5 - Very High")
EDU2c1 <- cut(EDU2, EDU2b, EDU2l)
EDU2pal <- colorBin("YlOrRd", domain = EDU2, bins = EDU2b)
EDU2labels <- sprintf(
"<h5><center>School Math Proficiency:<br><center><strong>%s</strong></h5>
<h5><center>Opertunity Index:<br><center><strong>%s</strong></h5>
<h6><center>%s</h6>",
EDU2, EduScore, NAMELSAD10
) %>% lapply(htmltools::HTML)
EDU2m <- leaflet(KingEduJson) %>%
setView(-121.979052, 47.45, 9) %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addPolygons(
fillColor = ~EDU2pal(EDU2),
weight = 1,
opacity = 1,
color = "white",
dashArray = "3",
fillOpacity = 0.7,
highlight = highlightOptions(
weight = 5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = EDU2labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto"))%>%
addLegend(pal = EDU2pal, values = EDU2c1, opacity = 0.7, title = "<center>School Math Proficiency",
position = "bottomleft",)
EDU2m
#EDU3
#summary(EDU3)
EDU3ci <- (max(EDU3, na.rm = T) - min(EDU3, na.rm = T))/5
EDU3var <- EDU3ci
EDU3b <- c(-Inf, EDU3var + EDU3ci, EDU3var+ EDU3ci*2, EDU3var+EDU3ci*3, EDU3var+ EDU3ci*4, Inf)%>%
percent()
#head(EDU3b_test, 5)
EDU3l <- c("1 – Very Low","2 – Low","3 – Moderate","4 – High","5 - Very High")
EDU3c1 <- cut(EDU3, EDU3b, EDU3l)
EDU3pal <- colorBin("YlOrRd", domain = EDU3, bins = EDU3b)
EDU3labels <- sprintf(
"<h5><center>Poverty Rate:<br><center><strong>%s</strong></h5>
<h5><center>Opertunity Index:<br><center><strong>%s</strong></h5>
<h6><center>%s</h6>",
percent(EDU3), EduScore, NAMELSAD10
) %>% lapply(htmltools::HTML)
EDU3m <- leaflet(KingEduJson) %>%
setView(-121.979052, 47.45, 9) %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addPolygons(
fillColor = ~EDU3pal(EDU3),
weight = 1,
opacity = 1,
color = "white",
dashArray = "3",
fillOpacity = 0.7,
highlight = highlightOptions(
weight = 5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = EDU3labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto"))%>%
addLegend(pal = EDU3pal, values = EDU3c1, opacity = 0.7, title = '<center>% Students Receiving<br><center>Food Assistance',
position = "bottomleft")
EDU3m
#EDU4
#summary(EDU4)
EDU4ci <- (max(EDU4, na.rm = T) - min(EDU4, na.rm = T))/5
EDU4var <- EDU4ci
EDU4b <- c(-Inf, EDU4var + EDU4ci, EDU4var+ EDU4ci*2, EDU4var+EDU4ci*3, EDU4var+ EDU4ci*4, Inf)%>%
percent()
#head(EDU4b_test, 5)
EDU4l <- c("1 – Very Low","2 – Low","3 – Moderate","4 – High","5 - Very High")
EDU4c1 <- cut(EDU4, EDU4b, EDU4l)
EDU4pal <- colorBin("YlOrRd", domain = EDU4, bins = EDU4b)
EDU4labels <- sprintf(
"<h5><center>Teachers with a<br><center>Master's Degree<br><center>or Higher:<br><center><strong>%s</strong></h5>
<h5><center>Opertunity Index:<br><center><strong>%s</strong></h5>
<h6><center>%s</h6>",
percent(EDU4), EduScore, NAMELSAD10
) %>% lapply(htmltools::HTML)
EDU4m <- leaflet(KingEduJson) %>%
setView(-121.979052, 47.45, 9) %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addPolygons(
fillColor = ~EDU4pal(EDU4),
weight = 1,
opacity = 1,
color = "white",
dashArray = "3",
fillOpacity = 0.7,
highlight = highlightOptions(
weight = 5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = EDU4labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto"))%>%
addLegend(pal = EDU4pal, values = EDU4c1, opacity = 0.7, title = "<center>% Teachers with a<br><center>Master's Degree or Higher",
position = "bottomleft",)
EDU4m
#EDU5
#summary(EDU5)
EDU5ci <- (max(EDU5, na.rm = T) - min(EDU5, na.rm = T))/5
EDU5var <- EDU5ci
EDU5b <- c(-Inf, EDU5var + EDU5ci, EDU5var+ EDU5ci*2, EDU5var+EDU5ci*3, EDU5var+ EDU5ci*4, Inf)%>%
percent()
#head(EDU5b_test, 5)
EDU5l <- c("1 – Very Low","2 – Low","3 – Moderate","4 – High","5 - Very High")
EDU5c1 <- cut(EDU5, EDU5b, EDU5l)
EDU5pal <- colorBin("YlOrRd", domain = EDU5, bins = EDU5b)
EDU5labels <- sprintf(
"<h5><center>Graduation Rates:<br><center><strong>%s</strong></h5>
<h5><center>Opertunity Index:<br><center><strong>%s</strong></h5>
<h6><center>%s</h6>",
percent(EDU5), EduScore, NAMELSAD10
) %>% lapply(htmltools::HTML)
EDU5m <- leaflet(KingEduJson) %>%
setView(-121.979052, 47.45, 9) %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addPolygons(
fillColor = ~EDU5pal(EDU5),
weight = 1,
opacity = 1,
color = "white",
dashArray = "3",
fillOpacity = 0.7,
highlight = highlightOptions(
weight = 5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = EDU5labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto"))%>%
addLegend(pal = EDU5pal, values = EDU5c1, opacity = 0.7, title = "<center>Graduation Rates",
position = "bottomleft",)
EDU5m
The data and analysis produced visual insights into the state of education opportunity in King County. The Opportunity Index Map displays the diversity in these opportunities yet shows how the Puget Sound Region has the widest range when compared to the rest of the County. The other five data sets and maps are able to show the areas that are in need of improvement in their opportunities to their students. These maps can be further analyzed to create a plan to improve the variables that may be hindering a student’s opportunities in obtaining a quality education. Further study could include population density of these Census Tracts to represent the Education Opportunity Index in a more accurate representation of the region.
Growing Transit Communities. “Opportunity Mapping.” Puget Sound Regional Council, 12 Mar. 2020, www.psrc.org/opportunity-mapping.
Vassilev. “Educational Indicators.” <i.Wikiprogress, 23 Aug. 2012, wikiprogress.org/articles/education-and-skills/educational-indicators/#What_should_an_education_indicator_measure.
EDU0m
EDU1m
EDU2m
EDU3m
EDU4m
EDU5m